只要把每個字母或符號以鍵盤上它左邊第二個鍵的符號來取代就行了。
空白和換行請直接輸出。
1.先建立對比用字串
2.輸入字串
3.先將大寫轉小寫
4.再逐一與比對用字串作轉換(空白直接輸出)
5.輸出
#include <iostream>
#include <string>
using namespace std;
int main()
{
string c=" `1234567890-=qwertyuiop[]asdfghjkl;'zxcvbnm,./";
//建立比對用的字串,先按空白鍵,之後從鍵盤左邊按到右邊就對了。
string s;//要輸入的字串
while(getline(cin,s))//輸入
{
for(int i=0;i<s.length();i++)//開始一個一個比對
{
if(s[i]>='A'&&s[i]<='Z')
{
s[i]=s[i]+32; //先將大寫換成小寫
}
for(int t=0;t<c.length();t++)//逐一與比對用字串比對
{
if(s[i]==c[0])//空白鍵不用轉換
{
cout<<" ";
break;
}
else if(s[i]==c[t])
{
cout<<c[t-2];//輸出左邊兩個鍵盤的字
break;
}
}
}
cout<<endl;
}
return 0;
}
#include <iostream>
using namespace std;
int main(){
int n;
int count=1;
cin>>n;
while(n--){
int d;
string tmp1,tmp2;
scanf("%s%s%d",tmp1,tmp2,&d);
bool sy;
int a[d][d]={0},num;
for(int i=0;i<d;i++){
for(int k=0;k<d;k++){
cin>>num;
a[i][k]=num;
}
}
for(int i=0;i<d;i++){
for(int k=0;k<d;k++){
if(i==d-2&&k==d-2)continue;
else if(a[k][i]!=a[d-1-k][d-1-i]||a[k][i]<0){
sy=false;
break;
}else sy=true;
}
}
if(sy)cout<<"Test #"<<count<<": Symmetric."<<endl;
else cout<<"Test #"<<count<<": Non-symmetric."<<endl;
count++;
}
}
#include<iostream>
#include<string>
using namespace std;
int main() {
string str;
while (getline(cin, str)) { //ㄏㄏ有空格
int acs[127] = { 0 }, acsii[127] = { 0 }, sort[94] = { 0 }, l = 0, tmp;
for (int i = 0; i < str.length(); i++) {
acs[(int)str[i]] += 1; //(int)str[i] 為 acsii code
}
for (int j = 32; j <= 126; j++) {
if (acs[j] > 0) {
sort[l] = acs[j];
l++;
}
}
//將次數由小排到大
for (int i = 0; i < l - 1; i++) { //因為有j+1的問題,index error所以,所需檢查的陣列會減一
for (int j = 0; j < l - 1 - i; j++) { //美交換一次,所需檢查的陣列會減一
if (sort[j] > sort[j + 1]) {
tmp = sort[j]; //大的放暫時變數
sort[j] = sort[j + 1]; //小的放進前一個
sort[j + 1] = tmp; //大的放進後一個,交換
}
}
}
//印由少到多的ACSII
for (int i = 0; i < l; i++) {
for (int j = 126; j >= 32; j--) { //如果有2個以上的字元有相同的次數,則ASCII值較大的先輸出,所以倒推回去
if (sort[i] == acs[j]) {
cout << j << " " << sort[i] << endl;
acs[j] = 0; //避免讀取到已印出次數的ACSII
break;
}
}
}
}
}